﻿using System;

namespace tiny_compiler
{
	public static class SimpleCode
	{
		public static void Generate(Compiler compiler)
		{
			compiler.Add(new Jump("start"));

			compiler.Add(new ValueNumber("zero", 0));
			compiler.Add(new ValueNumber("one", 1));
			compiler.Add(new ValueNumber("minus_one", -1));
			compiler.Add(new ValueNumber("screen_offset", 82));
			compiler.Add(new Value("input_key", " "));
			compiler.Add(new Value("input_key_copy", " "));
			compiler.Add(new Value("exit_key", "q"));
			compiler.Add(new ValueNumber("current", 0));
			compiler.Add(new ValueNumber("step", 1));
			compiler.Add(new ValueNumber("max", 10));

			compiler.Add(new Label("start"));
			compiler.Add(new ReadKey("input_key"));
			compiler.Add(new Copy("input_key_copy", "zero", "input_key"));
			compiler.Add(new Cursor("screen_offset"));
			compiler.Add(new Print("input_key_copy"));
			compiler.Add(new Add("current", "step"));
			compiler.Add(new Compare("current", "zero", "max", "end", true));
			compiler.Add(new Jump("start"));
			compiler.Add(new Label("end"));
		}
	}
}
